// eslint-disable-next-line @typescript-eslint/triple-slash-reference
/// <reference  path="../../support/index.d.ts" />
import '../../support/commands'

// Напишите следующий тест-кейс и успешно выполните его: (2 балла)
//   + Зайти на форму авторизации.
//   + Авторизоваться.
//   + Перейти на страницу постов или продуктов.
//   + Поставить лайк третьему и шестому посту или продукту.
//   + Проверить наличие лайков.
//   + Снять лайки.
//   + Проверить снятие лайков.

describe('Тестируем авторизацию, лайки 3-го и 6-го продукта, снятие лайков', () => {
	beforeEach(() => {
		cy.viewport(1480, 920)
		cy.visit('/signin')
		cy.login()
	})

	it('Периход на страницу Каталога', () => {
		cy.url().should('be.equal', 'http://localhost:3000/')
		cy.get('div > a:nth-child(2)').contains('Каталог').click()
	})

	it('Поставить лайк третьему и шестому продукту', () => {
		cy.url().should('be.equal', 'http://localhost:3000/')
		cy.get('div > a:nth-child(2)').contains('Каталог').click()

		function likeFn(products: number[], like: boolean) {
			products.forEach((product) => {
				cy.get(
					`[data-testid="PRODUCT_CARDS"] > div:nth-child(${product}) > div > div:last-child`
				).then((btn) => {
					if (like) {
						// если товар не лайкнут, то лайкаем
						if (btn.html().includes('data-testid="FavoriteBorderIcon"'))
							cy.wrap(btn).click()
					} else {
						// если товар лайкнут, то дизлайкаем
						if (btn.html().includes('data-testid="FavoriteIcon"'))
							cy.wrap(btn).click()
					}
				})
			})
		}

		// лайкаем 3-й и 6-й продукт
		const products = [3, 6]
		likeFn(products, true)
		cy.wait(3000).then(() => likeFn(products, false))

		// проверяем снятие наличие дислайков
		cy.get(
			`[data-testid="PRODUCT_CARDS"] > div:nth-child(${3}) > div > div:last-child > svg`
		).should('have.attr', 'data-testid', 'FavoriteBorderIcon')
	})
})
